/**
 * 本地存储工具
 * 统一管理 Storage，处理数据持久化
 */

const STORAGE_KEYS = {
  FAVORITES: 'favorites',
  VIEW_HISTORY: 'viewHistory',
  AD_CONFIG: 'adConfig',
  USER_SETTINGS: 'userSettings',
  BROWSE_COUNT: 'browseCount',
  LAST_INTERSTITIAL_TIME: 'lastInterstitialTime'
}

/**
 * 设置存储
 * @param {string} key 键名
 * @param {any} value 值
 */
export function setStorage(key, value) {
  try {
    const data = JSON.stringify(value)
    uni.setStorageSync(key, data)
    return true
  } catch (error) {
    console.error('setStorage error:', error)
    return false
  }
}

/**
 * 获取存储
 * @param {string} key 键名
 * @param {any} defaultValue 默认值
 * @returns {any}
 */
export function getStorage(key, defaultValue = null) {
  try {
    const data = uni.getStorageSync(key)
    if (!data) {
      return defaultValue
    }
    return JSON.parse(data)
  } catch (error) {
    console.error('getStorage error:', error)
    return defaultValue
  }
}

/**
 * 删除存储
 * @param {string} key 键名
 */
export function removeStorage(key) {
  try {
    uni.removeStorageSync(key)
    return true
  } catch (error) {
    console.error('removeStorage error:', error)
    return false
  }
}

/**
 * 清空所有存储
 */
export function clearStorage() {
  try {
    uni.clearStorageSync()
    return true
  } catch (error) {
    console.error('clearStorage error:', error)
    return false
  }
}

/**
 * 保存收藏列表
 * @param {Array} favorites 收藏列表
 */
export function saveFavorites(favorites) {
  return setStorage(STORAGE_KEYS.FAVORITES, favorites)
}

/**
 * 获取收藏列表
 * @returns {Array}
 */
export function getFavorites() {
  return getStorage(STORAGE_KEYS.FAVORITES, [])
}

/**
 * 保存浏览历史
 * @param {Array} history 浏览历史
 */
export function saveViewHistory(history) {
  return setStorage(STORAGE_KEYS.VIEW_HISTORY, history)
}

/**
 * 获取浏览历史
 * @returns {Array}
 */
export function getViewHistory() {
  return getStorage(STORAGE_KEYS.VIEW_HISTORY, [])
}

/**
 * 保存用户设置
 * @param {Object} settings 用户设置
 */
export function saveUserSettings(settings) {
  return setStorage(STORAGE_KEYS.USER_SETTINGS, settings)
}

/**
 * 获取用户设置
 * @returns {Object}
 */
export function getUserSettings() {
  return getStorage(STORAGE_KEYS.USER_SETTINGS, {})
}

/**
 * 保存广告配置
 * @param {Object} config 广告配置
 */
export function saveAdConfig(config) {
  return setStorage(STORAGE_KEYS.AD_CONFIG, config)
}

/**
 * 获取广告配置
 * @returns {Object}
 */
export function getAdConfig() {
  return getStorage(STORAGE_KEYS.AD_CONFIG, null)
}

export { STORAGE_KEYS }

